package com.lovi.homework;

import java.util.HashSet;

public class Homework07 {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        Person p1 = new Person("happy", 18);
        Person p2 = new Person("happy2", 18);
        set.add(p1);
        set.add(p2);
        p1.setAge(20);
        System.out.println(set);
        //删除失败，因为p1的hash值由name和age决定，age变了，
        //hash就变了，所以remove的是不存在的hash值，所以remove失败
        set.remove(p1);
        System.out.println(set);//因此输出依然有2个
        //这里可以正常添加，虽然它的hash和修改后的p1的name和age一样
        //但是p1修改之前就已经放在了table表中了，所以这个add的和原来的放的table表位置不一样
        //因此也不需要比较值，直接放进去
        Person p3 = new Person("happy", 20);
        set.add(p3);
        System.out.println(set);//3个
        //这里计算在table表中的位置和p1的位置一样，
        //因此会进一步比较name和age是不是都相等，而p1的age改变了，就不会相等，因此能加进去
        Person p4 =  new Person("happy", 18);
        set.add(p4);
        System.out.println(set);//4个

    }
}
